LNMP- php编译安装

        首先针对 nginx 的 php 安装和针对 apache 的 php 安装是有区别的,因为 nginx 中的 php 是以 fastcgi 的方式结合 nginx 的。可以理解为 nginx 代理了 php 的 fastcgi ,而 apache 是把 php 作为子机的模块来调用的。php官方下载地址

1.下载 php 源码包

1
2
[root@lnmp ~]# cd /usr/local/src
[root@lnmp src]# wget http://aul.php.net/distributions/php-5.4.44.tar.bz2

2.解压源码包

1
[root@lnmp src]# tar jxf php.5.4.44.tar.bz2

3.创建相关帐号

1
[root@lnmp src]# useradd -s /sbin/nologin php-fpm

4.依赖包安装

1
yum install -y bzip2-devel curl-devel db4-devel libjpeg-devel libpng-devel libXpm-devel gmp-devel libc-client-devel openldap-devel unixODBC-devel postgresql-devel sqlite-devel aspell-devel net-snmp-devel libxslt-devel libxml2-devel pcre-devel mysql-devel unixODBC-devel postgresql-devel pspell-devel net-snmp-devel freetype-devel libtomcrypt-devel.x86_64 php-mcrypt libmcrypt libmcrypt-devel

5.配置编译参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@lnmp src]# cd php-5.4.44
[root@lnmp php-5.4.44]# ./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=php-fpm \
--with-fpm-group=php-fpm \
--with-mysql=/usr/local/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-ftp \
--enable-mbstring \
--enable-exif \
--disable-ipv6 \
--with-pear \
--with-curl \
--with-openssl

        在该过程中,若出现和 lamp 安装 php 的错误一样的错误参照 lamp 的方法来解决,若出现如下错误,参考下面解决办法:

        错误信息:

1
2
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/

        解决办法:

1
yum install -y libcurl-devel

6.编译 php

1
[root@lnmp php-5.4.44]# make

        在这一步,通常会遇到一些错误:

1
2
3
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] 错误 1

        解决办法:

1
yum install -y libtool-ltdl-devel

7.安装 php

1
[root@lnmp php-5.4.44]# make install

        以上每一步骤,如果没有完全执行正确,那么下一步是无法进行的,使用 echo $? 看结果是否为 “0”,如果不是,就是没有执行正确。

8.修改配置文件

1
2
cp php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php-fpm.conf

        添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]
listen = /tmp/php-fcgi.sock
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

        保存配置文件后,检验配置是否正确的方法为:

1
/usr/local/php/sbin/php-fpm -t

        如果出现诸如 “test is successful” 字样,说明配置没有问题。

9.启动 php-fpm

        首先要拷贝一个启动脚本到 /etc/init.d 下

1
cp /usr/local/src/php-5.4.44/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

        更改权限为755

1
2
chmod 755 /etc/init.d/php-fpm
service php-fpm start

        如果要它开机启动,执行:

1
chkconfig php-fpm on

        检测是否成功:

1
ps aux |grep php-fpm

        看看是不是有很多进程